﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using AccesoDatos.Manejador;
using AccesoDatos.Objetos;
using Conexion;
using System.Windows.Forms;
/*Detalles del empleado
 * Captura y modifica
 * 
 * 
 
 */

namespace Autorizacion_facturas_caja
{
    public partial class frmEmpleado_Detalle : Form
    {
        Manejador_Empleado_Detalle Man= new Manejador_Empleado_Detalle();
        ClsConexion conexion = new ClsConexion();        
        objRH obj1 = new objRH();
        objRH objeto = new objRH();

        #region funciones

        public frmEmpleado_Detalle(objRH obj)
        {
            InitializeComponent();
            ToolTip();
            objeto = obj;

            //Si el objeto no es nulo se llenan los campos correspondientes y se desahabilitan los campos 
            try
            {
                desahabilitarCampos();
                llenarcampos();
                habilitarbotones(1);

            }
            catch
            {//Si no tiene datos agregados el empleado se mostrara para que se capturen los datos
                habilitarCampos();
                habilitarbotones(0);
            }
        }
        //Limpia los campos 
        private void limpiar()
        {

            txtAlergias.Text = "";
            txtCelular.Text = "";
            txtContacto.Text = "";
            txtCurp.Text = "";
            txtDireccion.Text = "";
            txtLugar.Text = "";
            txtTelContacto.Text = "";
            txtTelefono.Text = "";
            dateNacimiento.Text = "";
            txtNss.Text = "";
            chkDonador.Checked = false;
            txtCorreo.Text = "";
            txtCantidad_Nss.Text = "";

        }
        
        private void ToolTip()
        {
            ToolTip toolTip1 = new ToolTip();

            toolTip1.ShowAlways = true;
            toolTip1.SetToolTip(this.btnModificar, "MODIFICAR DATOS");
            toolTip1.SetToolTip(this.btnGuardar, "GUARDAR");
            toolTip1.SetToolTip(this.btnCancelar, "CANCELAR");
            toolTip1.SetToolTip(this.btnLimpiar, "LIMPIAR");
            toolTip1.SetToolTip(this.btnSalir, "REGRESAR");
            toolTip1.SetToolTip(this.btnGuardarMod, "GUARDAR MODIFICACIÓN");
        }

        private bool validar()
        {
            if (txtLugar.Text != "" && txtCurp.Text != "" && txtNss.Text != "" && txtDireccion.Text != "" && txtTelefono.Text != "" && txtTelContacto.Text != "" && txtContacto.Text != "" && txtCelular.Text != "" && txtCorreo.Text!="") return true;
            return false;
        }

        private void habilitarbotones(int op)
        {
            switch (op)
            {

                case 0: //Si no se han agregado datos adicionales
                    btnGuardar.Visible = true;
                    btnLimpiar.Visible = true;
                    btnSalir.Visible = true;
                    btnModificar.Visible = false;
                    btnGuardarMod.Visible = false;
                    btnCancelar.Visible = false;
                    break;
                case 1://Si se tiene datos adicionales
                    btnGuardar.Visible = false;
                    btnLimpiar.Visible = false;
                    btnSalir.Visible = true;
                    btnModificar.Visible = true;
                    btnGuardarMod.Visible = false;
                    btnCancelar.Visible = false;
                    break;
                case 2://Guardar modificar
                    btnGuardar.Visible = false;
                    btnLimpiar.Visible = false;
                    btnSalir.Visible = false;
                    btnModificar.Visible = false;
                    btnGuardarMod.Visible = true;
                    btnCancelar.Visible = true;
                    break;
            }

        }

        private void desahabilitarCampos()
        {

            txtNss.Enabled = false;
            chkDonador.Enabled = false;
            txtCurp.Enabled = false;
            txtAlergias.Enabled = false;
            txtContacto.Enabled = false;
            txtTelContacto.Enabled = false;
            txtDireccion.Enabled = false;
            dateNacimiento.Enabled = false;
            txtLugar.Enabled = false;
            txtTelefono.Enabled = false;
            txtCelular.Enabled = false;
            txtCorreo.Enabled = false;
            txtCantidad_Nss.Enabled = false;

        }
        
        private void habilitarCampos()
        {
            txtNss.Enabled = true;
            chkDonador.Enabled = true;
            txtCurp.Enabled = true;
            txtAlergias.Enabled = true;
            txtContacto.Enabled = true;
            txtTelContacto.Enabled = true;
            txtDireccion.Enabled = true;
            dateNacimiento.Enabled = true;
            txtLugar.Enabled = true;
            txtTelefono.Enabled = true;
            txtCelular.Enabled = true;
            txtCorreo.Enabled = true;
            txtCantidad_Nss.Enabled = true;

        }
       
        private void obtenercampos()
        {
            int donador = 0;
            if (chkDonador.Checked) { donador = 1; }
            objeto.Nss = txtNss.Text.Trim();
            objeto.Curp = txtCurp.Text.Trim();
            objeto.Donador = donador;
            objeto.Alergias = txtAlergias.Text.Trim();
            objeto.Contacto = txtContacto.Text.Trim();
            objeto.Contacto_Telefono = txtTelContacto.Text.Trim();
            objeto.Direccion = txtDireccion.Text.Trim();
            objeto.Fecha_Nacimiento = dateNacimiento.Value;
            objeto.Lugar_Nacimiento = txtLugar.Text.Trim();
            objeto.Telefono = txtTelefono.Text.Trim();
            objeto.Celular = txtCelular.Text.Trim();
            objeto.Correo = txtCorreo.Text.Trim();
            objeto.Cantidad_SeguroS = txtCantidad_Nss.Text.Trim();
        }
       
        private void llenarcampos()
        {

            obj1 = Man.ConsultaDetalles(objeto.Id_Empleado);
            txtNss.Text = obj1.Nss;
            txtCurp.Text = obj1.Curp;
            txtAlergias.Text = obj1.Alergias;
            txtCelular.Text = obj1.Celular;
            txtContacto.Text = obj1.Contacto;

            txtDireccion.Text = obj1.Direccion;
            txtLugar.Text = obj1.Lugar_Nacimiento;
            txtTelContacto.Text = obj1.Contacto_Telefono;
            txtTelefono.Text = obj1.Telefono;
            dateNacimiento.Text = obj1.Fecha_Nacimiento.ToShortDateString();
            txtCorreo.Text = obj1.Correo;
            txtCantidad_Nss.Text = obj1.Cantidad_SeguroS;
        }

        #endregion

        #region Botones
        private void btnGuardar_Click(object sender, EventArgs e)
        {
            if (validar())
            {
                obtenercampos();
                try
                {
                    bool res = Man.GuardaDetalles(objeto.Id_Empleado, objeto.Nss, objeto.Curp, objeto.Donador, objeto.Alergias, objeto.Contacto, objeto.Contacto_Telefono, objeto.Direccion, objeto.Fecha_Nacimiento, objeto.Lugar_Nacimiento, objeto.Telefono, objeto.Celular, objeto.Correo, objeto.Cantidad_SeguroS);
                    if (res)
                    {
                      
                        desahabilitarCampos();
                        llenarcampos();
                        habilitarbotones(1);
                       MessageBox.Show("GUARDADO CORRECTAMENTE", "ALERTA");
                    }
                    else { MessageBox.Show("ERROR", "ALERTA"); }
                }
                catch { 
                  MessageBox.Show("FALLO CONEXIÓN", "ALERTA");
                
                }
            }
            else MessageBox.Show("CAMPOS VACIOS", "ALERTA");
    
        }
       
        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Close();
        }
       
        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            limpiar();
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            habilitarbotones(2);
            habilitarCampos();
        }
   
        private void btnSalir_Click(object sender, EventArgs e)
        {
            Close();

        }
        
        private void btnGuardarMod_Click(object sender, EventArgs e)
        {
            if (validar())
            {
                obtenercampos();
                bool res = Man.ModificaDetalles(objeto.Id_Empleado, objeto.Nss, objeto.Curp, objeto.Donador, objeto.Alergias, objeto.Contacto, objeto.Contacto_Telefono, objeto.Direccion, objeto.Fecha_Nacimiento, objeto.Lugar_Nacimiento, objeto.Telefono, objeto.Celular, objeto.Correo, objeto.Cantidad_SeguroS);
                if (res)
                {
                    MessageBox.Show("SE MODIFICO CORRECTAMENTE","AVISO");
                    desahabilitarCampos();
                    llenarcampos();
                    habilitarbotones(1);
                }
                else { MessageBox.Show("ERROR AL MODIFICAR","ALERTA"); }
       
            }
            else MessageBox.Show("FALTAN CAMPOS POR CAPTURAR","ALERTA");
        }
        #endregion 
        
        #region eventos
        private void txtTelefono_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void txtCelular_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void txtCantidad_Nss_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsPunctuation(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void txtTelContacto_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }
        #endregion 
    }
}
